// Documento de configuracoes do sistema, desempenha funcoes de base
$.fn.extend({
    editMsg: function () {
        msg_edit = $(this);
        $(this).unbind('editMsg');
        if ($("#edit-hint").length) {
            swal('Ooops...', 'Você não pode editar duas mensagens ao mesmo tempo.', "error");
            $(".cd-timeline-content p.editar").focus();
            return false;
        }
        tgt = $(this).closest('.cd-timeline-block');
        editor = tgt.find('.ds_msg');
        texto_antigo = editor.html();
        editor.addClass('editar').attr('contenteditable', 'true').focus();
        howto = $('<p>', {
            id: 'edit-hint'
        });
        tgt.find('.msg-opt').fadeOut('fast');
        howto.html('<small>Pressione ENTER para Salvar ou ESC para cancelar</small>').insertAfter(editor);
        editor.keydown(function (event) {
            if (event.keyCode === 13) {
                event.preventDefault(event);
                $("#edit-hint").remove();
                id_msg = tgt.attr('data-co-evt').replace('evt', '');
                ds_msg = editor.html();
                ds_msgURI = encodeURIComponent(ds_msg).replace('%EF%BB%BF', '');
                console.log(ds_msgURI);
                editor.removeClass('editar').attr('contenteditable', 'false');
                if (ds_msg === texto_antigo) {
                    tgt.find('.msg-opt').fadeIn('fast');
                } else {
                    $.ajax('./coordenacao/alterarmsg/?op=edit&id=' + id_msg + '&msg=' + ds_msgURI).done(function (data) {
                        editor.html(data);
                        tgt.find('.msg-opt').fadeIn('fast');
                    });
                }
            }
            if (event.keyCode === 27) {
                event.preventDefault(event);
                $("#edit-hint").remove();
                editor.html(texto_antigo).removeClass('editar').attr('contenteditable', 'false');
                tgt.find('.msg-opt').fadeIn('fast');
            }
        });
        msg_edit.unbind('editMsg');
        return false;
    },
    removeMsg: function () {
        tgt = $(this).closest('.cd-timeline-block');
        id_msg = tgt.attr('data-co-evt').replace('evt', '');
        swal({
            title: "Excluir mensagem?",
            text: "Deseja realmente excluir esta mensagem?",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Excluir",
            cancelButtonText: "Não, deixe como está",
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                $.ajax('./academico/alterarmsg/?op=remove&id=' + id_msg).done(function () {
                    tgt.remove();
                    swal('Removida', 'A mensagem foi removida', "success");
                });
            }
        });
        return false;
    }
});
$(document).ready(function () {
    function sendMsg() {
        $("#form-msg").on("submit", function () {
            msgBL = $("#ds_msg").val().replace(/\r\n|\r|\n/g, "<br />");
            smsg = encodeURI(msgBL);
            coGrade = $("#codgrade").val();
            if (smsg === '') {
                swal('Ooops...', 'A mensagem não poderá ser enviada vazia.', "error");
                return false;
            }
            $('.dcp_dia').html('<p>&nbsp;</p><p align="center">Aguarde...</p>');
            $.ajax('./coordenacao/enviarmsg/?ds_msg=' + smsg + '&grade=' + coGrade).done(function (data) {
                hse = data.replace(/[^0-9]/g, '');
                location.hash = '#evt' + hse;
                $('#grade-timeline').load('./coordenacao/grade/avaliar/' + coGrade + ' #cd-timeline', function () {
                    $.fancybox.close();
                    ver_evento();
                });
            });
            return false;
        });
    }

    function rejectGrade() {
        $("#cdg").val($("#codgrade").val());
        $("#cancel-rj").click(function (e) {
            e.preventDefault(e);
            $.fancybox.close();
            return false;
        });

        $("#send-rj").click(function (e) {
            e.preventDefault(e);
            vars = $("#form-msg").serialize();
            $.fancybox.showLoading();
            $.ajax({
                url: './coordenacao/rejeitargrade',
                data: vars
            }).done(function (data) {
                var coGrade = $("#codgrade").val();
                hse = data.replace(/[^0-9]/g, '');
                location.hash = '#evt' + hse;
                $('#grade-timeline').load('./coordenacao/grade/avaliar/' + coGrade + ' #cd-timeline', function () {
                    //$.fancybox.close();
                    //ver_evento();
                });
            });
            return false;
        });
    }

    function getdcpbanco() {
        var gradeAtual = 1; // Tem que corrigir isso
        $.getJSON('./coordenacao/listarbd/' + gradeAtual, function (data) {
            $.each(data, function (key, value) {
                tgt = $("#" + value.dia).find('.grade_header');
                dcp_text = '<span class="no-dcp">' + value.disciplina + '</span><span class="professor">' +
                        value.professor + '</span>';
                dcp = $('<li>', {
                    class: 'dcp_selecionada disciplina',
                    id: 'dcpw' + value.turma
                });
                dcp.css('display', 'none');
                dcp.html(dcp_text);
                dcp.attr('data-co-dcp', value.turma);
                dcp.insertAfter(tgt);
                dcp.fadeIn('slow');
            });
            $('.grade').each(function () {
                trgt = $(this).find('.grade_header');
                qtd_dcp = $(this).find('.disciplina').size();
                span_dcp = '<span class="i-plus"><i class="sonic-icon icon-ban-circle"></i></span>';
                if (qtd_dcp === 0) {
                    dcp_null = $('<li>', {
                        class: 'disciplina'
                    });
                    dcp_null.html(span_dcp);
                    dcp_null.css('display', 'none');
                    dcp_null.insertAfter(trgt);
                    dcp_null.fadeIn('slow');
                }
            });
        });
    }


// Caso o redirecionamento preveja a exibicao de algum evento, rolar a pagina.
    function ver_evento() {
        if (window.location.hash !== '') {
            fh = window.location.hash.replace('#', '');
            evt = $('div[data-co-evt="' + fh + '"]');
            if (evt.length) {
                evt.children('.cd-timeline-content').css('background-color', '#FFF8B2');
                focusHash = $('div[data-co-evt="' + fh + '"]').offset().top;
                $('html, body').animate({scrollTop: focusHash - 80}, 1500, function () {
                    evt.children('.cd-timeline-content').animate({backgroundColor: '#F1F1F1'}, 800);
                });
            }
        }
        $('.msg-reply').on('click', function () {
            $("#msg").trigger('click');
            return false;
        });
        $(".msg-edit").on('click', function (event) {
            event.preventDefault(event);
            $(this).editMsg();
        });
        $(".msg-remove").on('click', function (event) {
            event.preventDefault(event);
            $(this).removeMsg();
            return false;
        });
    }
    $(window).on('load', function () {
        ver_evento();
        getdcpbanco();
    });
    // Adicionar tooltips nos objetos
    if (!isMobile()) {
        $(".tooltip, .add_dcp, .help-me, .cd-date").tooltipster({theme: 'tooltipster-punk'});
    }
    $(".help-me").click(function () {
        return false;
    });

    $("#aprovar").click(function () {
        swal({
            title: "Aprovar solicitação?",
            text: "A grade será persistida e o aluno será notificado",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Aprovar",
            cancelButtonText: "Agora não",
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                var codgrade = $("#codgrade").val();
                $.ajax('coordenacao/aprovargrade/' + codgrade).done(function (data) {
                    if (data === '1') {
                        swal('Aprovada!', 'Você aprovou a solicitação de grade do aluno.', "success");
                        $("#aprovar, #rejeitar").remove();
                        $('#grade-timeline').load('./coordenacao/grade/avaliar/' + codgrade + ' #cd-timeline', function () {
                            var coevt = $(".cd-timeline-block").first().attr('data-co-evt');
                            location.hash = '#' + coevt;
                            ver_evento();
                        });
                    } else {
                        swal('Ooops!', 'Ocorreu um erro ao salvar esta iformação. Tente novamente.', "error");
                    }
                });
            }
        });
        return false;
    });

    $("#rejeitar").click(function (e) {
        e.preventDefault(e);
        $.fancybox({
            href: './coordenacao/rejeitargrade/1/',
            type: 'ajax',
            minWidth: '405px',
            minHeight: '360px',
            openEffect: 'elastic',
            closeEffect: 'elastic',
            ajax: {
                complete: function (jqXHR, textStatus) {
                    rejectGrade();
                }
            }
        });
        return false;
    });
    $("#msg").fancybox({
        type: 'ajax',
        minWidth: '405px',
        openEffect: 'elastic',
        closeEffect: 'elastic',
        ajax: {
            complete: function (jqXHR, textStatus) {
                $.fancybox.update();
                sendMsg();
            }
        }
    });
    $("#imprimir").click(function () {
        window.print();
        return false;
    });
});